package com.suzhiliang.springbootlesson.globalExceptionDeal;

import java.util.List;

/**
 * Copyright (C), 2015-2019, XXX有限公司
 *
 * @ClassName: ApiResultGenerator
 * @Author: xmm
 * @Date: 2019/8/21 15:50
 * @Description: 该类是用来创建成功、失败返回JSON的工具类
 * @Version 1.0
 */
public final class ApiResultGenerator {

    /**
     * @param flag 执行接口状态：true:执行成功，false执行失败
     * @param msg  返回消息内容
     * @param result 返回结果
     * @param jumpUrl 跳转路径
     * @param rows
     * @param throwable
     * @return
     */
    public static ApiResult result(boolean flag,String msg,
                                   Object result,String jumpUrl,int rows,Throwable throwable){
        //创建返回对象
        ApiResult apiResult = ApiResult.newInstance();
        apiResult.setFlag(flag);
        apiResult.setMsg("".equals(msg) ? "执行成功":msg);
        apiResult.setJumpUrl(jumpUrl);
        apiResult.setResult(result);
        apiResult.setRows(rows);
        apiResult.setTime(System.currentTimeMillis());
        return apiResult;
    }

    /**
     * 返回执行成功视图方法
     * @param result 执行成功后的返回内容
     * @return
     */
    public static ApiResult successResult(Object result){
        //rows 默认为0
        int rows = 0;
        //如果是集合
        if (result instanceof List){
            //获取总数量
            rows = ((List)result).size();
        }
        return result(true,"",result,"",rows,null);
    }

    /**
     * 执行失败后返回的视图方法
     * @param msg 返回失败信息
     * @param throwable
     * @return
     */
    public static ApiResult errorResult(String msg,Throwable throwable){
        return result(false,msg,"","",0,throwable);
    }


}
